<?php
ini_set('display_errors', 0);
class AccessTokenAuthentication {
  /*
   * Get the access token.
   *
   * @param string $grantType    Grant type.
   * @param string $scopeUrl     Application Scope URL.
   * @param string $clientID     Application client ID.
   * @param string $clientSecret Application client ID.
   * @param string $authUrl      Oauth Url.
   *
   * @return string.
   */
  function getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl){
    try {
      //Initialize the Curl Session.
      $ch = curl_init();
      //Create the request Array.
      $paramArr = array (
             'grant_type'    => $grantType,
             'scope'         => $scopeUrl,
             'client_id'     => $clientID,
                 'client_secret' => $clientSecret
             );
      //Create an Http Query.//
      $paramArr = http_build_query($paramArr);
      //Set the Curl URL.
      curl_setopt($ch, CURLOPT_URL, $authUrl);
      //Set HTTP POST Request.
      curl_setopt($ch, CURLOPT_POST, TRUE);
      //Set data to POST in HTTP "POST" Operation.
      curl_setopt($ch, CURLOPT_POSTFIELDS, $paramArr);
      //CURLOPT_RETURNTRANSFER- TRUE to return the transfer as a string of the return value of curl_exec().
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
      //CURLOPT_SSL_VERIFYPEER- Set FALSE to stop cURL from verifying the peer's certificate.
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      //Execute the  cURL session.
      $strResponse = curl_exec($ch);
      //Get the Error Code returned by Curl.
      $curlErrno = curl_errno($ch);
      if($curlErrno){
    $curlError = curl_error($ch);
    throw new Exception($curlError);
      }
      //Close the Curl Session.
      curl_close($ch);
      //Decode the returned JSON string.
      $objResponse = $strResponse;//json_decode($strResponse);
      if ($objResponse->error){
 	   throw new Exception($objResponse->error_description);
      }
      return $objResponse;//->access_token;
    } catch (Exception $e) {
      echo "Exception-".$e->getMessage();
    }
  }
}
 
 
try {
    //Client ID of the application.
    $clientID       = "775753de-fd1f-484b-8f3d-dd8005a12ab2";
    //Client Secret key of the application.
    $clientSecret = "u20HXje+yuUVrKIuZAuAJHWc+dnc4NN5Epvsl6uVu40=";
  //OAuth Url.
  $authUrl      = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13/";
  //Application Scope Url
  $scopeUrl     = "http://api.microsofttranslator.com";
  //Application grant type
  $grantType    = "client_credentials";
   
  //Create the AccessTokenAuthentication object.
  $authObj      = new AccessTokenAuthentication();
  //Get the Access token.
  $accessToken  = $authObj->getTokens($grantType, $scopeUrl, $clientID, $clientSecret, $authUrl);
   
  //Change the Access token into JSON.
  //$arr = array('token' => $accessToken);
  //$encode = json_encode($arr);
  header("Content-Type: text/javascript; charset=utf-8");
  echo $accessToken;
 
} catch (Exception $e){
  echo "Exception: ". $e->getMessage(). PHP_EOL;
  }
 
?>